#include <string>
#include <vector>
#include <iostream>
using namespace std;
//类似于高精度加法
//leetcode 击败100%
class Solution
{
public:
    string _add(string &s, string &l)
    {
        // 先加
        for (int i = l.size() - 1, j = s.size() - 1; j >= 0; i--, j--)
        {
            l[i] += s[j] - '0';
        }
        // 统一处理进位
        int t = 0;
        for (int i = l.size() - 1; i >= 0; i--)
        {
            int num = l[i] - '0';
            num += t;
            t = num / 2;
            num %= 2;
            l[i] = num + '0';
        }
        // 进位
        string res;
        if (t)
            res.push_back('1');
        return res + l;
    }
    string addBinary(string a, string b)
    {
        // 遍历短的
        bool is_a_longger = a.size() > b.size();
        if (is_a_longger)
            return _add(b, a);
        return _add(a, b);
    }
};